param (
    [Parameter(Mandatory=$true)]
    [string]$SourceInstance,
    [Parameter(Mandatory=$true)]
    [string]$NewInstanceName,
    [Parameter(Mandatory=$true)]
    [string]$NewInstancePath
)

# 检查源 WSL 实例是否存在
if (-not (wsl --list --quiet | Where-Object { $_ -eq $SourceInstance })) {
    Write-Error "源 WSL 实例 '$SourceInstance' 未找到。"
    exit 1
}

# 检查新实例路径是否存在，如果不存在则创建
if (-not (Test-Path $NewInstancePath)) {
    New-Item -Path $NewInstancePath -ItemType Directory -Force | Out-Null
}

# 导出源 WSL 实例
$exportPath = "$env:TEMP\$SourceInstance.tar"
Write-Output "正在导出源 WSL 实例 $SourceInstance 到 $exportPath..."
wsl --export $SourceInstance $exportPath
if (-not $?) {
    Write-Error "导出源 WSL 实例 $SourceInstance 失败。"
    exit 1
}

# 导入新的 WSL 实例
Write-Output "正在从 $exportPath 导入新的 WSL 实例 $NewInstanceName 到 $NewInstancePath..."
wsl --import $NewInstanceName $NewInstancePath $exportPath --version 2
if (-not $?) {
    Write-Error "导入新的 WSL 实例 $NewInstanceName 失败。"
    Remove-Item -Path $exportPath -Force
    exit 1
}

# 删除导出的文件
Remove-Item -Path $exportPath -Force

Write-Output "新的 WSL 实例 $NewInstanceName 已成功创建在 $NewInstancePath。"